/**
 * 
 */
package com.xpec.c4.service.group.datalayer;

import java.util.List;

import org.infinispan.remoting.transport.Address;

import com.xpec.c4.service.group.OperationType;

/**
 * 
 * 
 * @author lipeilin
 * @2011-2-23 下午03:36:05
 * 
 */
public interface IDataManager {

	/**
	 * 获得指定的ShareMap 如果没有则创建一个
	 * 
	 * @param name
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-1-25 下午04:06:22
	 */
	public <K, V> IShareMap<K, V> getShareMap(String name);
	
	/**
	 * 获得指定的ShareMap 如果没有则创建一个
	 * 
	 * @param name
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-1-25 下午04:06:22
	 */
	public <K, V> IShareMap<K, V> initShareMap(String name);

	/**
	 * 获得指定的ShareMap 如果没有则创建一个
	 * 
	 * @param name
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-1-25 下午04:06:22
	 */
	public <K, V> IShareMap<K, V> getShareMap(String name,
			long lifespan);

	/**
	 * 获得指定的ShareMap 如果没有则创建一个
	 * 
	 * @param name
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-1-25 下午04:06:22
	 */
	public <K, V> IShareMap<K, V> getShareMap(String name,
			OperationType type);

	/**
	 * 获得指定的ShareMap 如果没有则创建一个
	 * 
	 * @param name
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-1-25 下午04:06:22
	 */
	public <K, V> IShareMap<K, V> getShareMap();

	public List<Address> getMembers();

	/**
	 * 本节点是否协调管理节点
	 * 
	 * @return
	 * 
	 * @author lipeilin
	 * @2011-2-15 下午05:50:48
	 */
	public boolean isCoordinator();
	
	/**
	 * 停止
	 * 
	 */
	public void stop();

}